#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=210;

int n,m;
int dp[N][N];
int h[N],ne[N],to[N],w[N],idx;
void add(int x,int y,int z)
{
	ne[idx]=h[x];
	to[idx]=y;
	w[idx]=z;
	h[x]=idx++;
}
void dfs(int u,int father)
{
	for(int i=h[u];~i;i=ne[i])
	{
		if(to[i]==father)
			continue;
		dfs(to[i],u);
		for(int j=m;j>=0;j--)
		{
			for(int k=0;k+1<=j;k++)
			{
				dp[u][j]=max(dp[u][j],dp[u][j-k-1]+dp[to[i]][k]+w[i]);
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	memset(h,-1,sizeof(h));
	for(int i=1;i<n;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		add(x,y,z);
		add(y,x,z);
	}
	dfs(1,-1);
	cout<<dp[1][m]<<endl;
	return 0;
}
